const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');

const app = express();
const PORT = 3000;

// 中间件
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// 静态文件服务
app.use(express.static('../frontend'));

// 模拟用户数据
const users = [
    { id: 1, username: 'admin', password: 'admin123', name: '管理员' },
    { id: 2, username: 'user', password: 'user123', name: '普通用户' },
    { id: 3, username: 'test', password: 'test123', name: '测试用户' }
];

// 登录接口
app.post('/api/login', (req, res) => {
    const { username, password } = req.body;
    
    // 验证请求数据
    if (!username || !password) {
        return res.status(400).json({
            success: false,
            message: '用户名和密码不能为空'
        });
    }
    
    // 查找用户
    const user = users.find(u => u.username === username && u.password === password);
    
    if (user) {
        // 登录成功
        const token = generateToken(user);
        
        res.json({
            success: true,
            message: '登录成功',
            token: token,
            user: {
                id: user.id,
                username: user.username,
                name: user.name
            }
        });
    } else {
        // 登录失败
        res.status(401).json({
            success: false,
            message: '用户名或密码错误'
        });
    }
});

// 验证token接口
app.get('/api/verify', (req, res) => {
    const token = req.headers.authorization?.split(' ')[1];
    
    if (!token) {
        return res.status(401).json({
            success: false,
            message: '未提供token'
        });
    }
    
    // 简单验证token
    const user = verifyToken(token);
    
    if (user) {
        res.json({
            success: true,
            user: user
        });
    } else {
        res.status(401).json({
            success: false,
            message: 'token无效'
        });
    }
});

// 生成简单token
function generateToken(user) {
    // 实际项目中应使用JWT或其他安全方式
    return Buffer.from(JSON.stringify({
        id: user.id,
        username: user.username,
        exp: Date.now() + 24 * 60 * 60 * 1000 // 24小时过期
    })).toString('base64');
}

// 验证token
function verifyToken(token) {
    try {
        const decoded = JSON.parse(Buffer.from(token, 'base64').toString());
        
        // 检查是否过期
        if (decoded.exp < Date.now()) {
            return null;
        }
        
        // 检查用户是否存在
        const user = users.find(u => u.id === decoded.id && u.username === decoded.username);
        return user ? { id: user.id, username: user.username, name: user.name } : null;
    } catch (error) {
        return null;
    }
}

// 首页接口
app.get('/api/dashboard', (req, res) => {
    const token = req.headers.authorization?.split(' ')[1];
    
    if (!token) {
        return res.status(401).json({
            success: false,
            message: '未提供token'
        });
    }
    
    const user = verifyToken(token);
    
    if (!user) {
        return res.status(401).json({
            success: false,
            message: 'token无效'
        });
    }
    
    res.json({
        success: true,
        message: `欢迎回来，${user.name}！`,
        user: user,
        data: {
            lastLogin: new Date().toLocaleString('zh-CN'),
            totalVisits: Math.floor(Math.random() * 100) + 1
        }
    });
});

// 健康检查接口
app.get('/api/health', (req, res) => {
    res.json({
        success: true,
        message: '服务运行正常',
        timestamp: new Date().toISOString()
    });
});

// 启动服务器
app.listen(PORT, () => {
    console.log(`服务器运行在 http://localhost:${PORT}`);
    console.log('可用的测试账号：');
    console.log('- 用户名: admin, 密码: admin123');
    console.log('- 用户名: user, 密码: user123');
    console.log('- 用户名: test, 密码: test123');
});